# 为什么不能使用列表去代替队列?
# 队列会自己带上一把锁 每一次只能取一个或者放一个
# 取出来 就直接从队列里面删除了
# 队列里面的数据我们是看不到到 只能够知道数据数量 保护数据的安全性
import queue

q = queue.Queue(maxsize=10)  # 这个消息队列最高可以保存10消息,自定义最大值

for i in range(1, 11):
    q.put(f'数据{i}')  # 使用put放入

"""如果队列满了 在往里面添加数据 默认一直阻塞在这里"""
# q.put('数据11')

"""解决方法"""

# 方法一 设置超时时间
# q.put('数据11',timeout=3) # 默认会阻塞，等待 3 秒钟 放第十一个数据的时候 队列满了 直接报错


# 方法二
# 队列满了 直接不等待 抛出错误
# q.put('数据11',block=False)

# 方法三
# 不等待，直接抛出错误，和方法二类似
# q.put_nowait('数据11')

# get取值 每一次只能取一个
for i in range(1, 11):
    bz = q.get()
    print(bz)

    """判断队列是否为空"""
    print(q.empty())

    """队列的大小(数据的数量)"""
    print(q.qsize())

    """如果队列满了 True  False"""
    print(q.full())

    """最大支持的队列长度"""
    print(q.maxsize)
